package com.w7vm.menuweb.managerBean;

import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import org.primefaces.context.RequestContext;

import com.w7vm.menuweb.entity.AlimentosTiposSy;
import com.w7vm.menuweb.entity.CardapioEspecialidadeWeb;
import com.w7vm.menuweb.entity.CardapioLaCarteWeb;
import com.w7vm.menuweb.entity.CarneAvesAlimentoSy;
import com.w7vm.menuweb.entity.CarneBovinaAlimentoSy;
import com.w7vm.menuweb.entity.CarneSuinaAlimentoSy;
import com.w7vm.menuweb.entity.CereaisAlimentoSy;
import com.w7vm.menuweb.entity.ComposicaoCardEspecialidadeWeb;
import com.w7vm.menuweb.entity.DocesAlimentoSy;
import com.w7vm.menuweb.entity.FrutasAlimentoSy;
import com.w7vm.menuweb.entity.HortalicasAlimentoSy;
import com.w7vm.menuweb.entity.MassasAlimentoSy;
import com.w7vm.menuweb.entity.PeixesAlimentoSy;
import com.w7vm.menuweb.entity.RestauranteEstruturaSy;
import com.w7vm.menuweb.entity.RestauranteFilialWeb;
import com.w7vm.menuweb.entity.RestauranteSedeWeb;
import com.w7vm.menuweb.facade.AlimentoFacade;
import com.w7vm.menuweb.facade.CardapioG3Facade;
import com.w7vm.menuweb.facade.PratoFacade;
import com.w7vm.menuweb.facade.RestauranteFilialFacade;
import com.w7vm.menuweb.facade.RestauranteSedeFacade;
import com.w7vm.menuweb.message.MessageFaces;
import com.w7vm.menuweb.service.AlimentosService;
import com.w7vm.menuweb.utility.Constantes;
import com.w7vm.menuweb.utility.ConstantesEJB;
import com.w7vm.menuweb.utility.FacesUtil;
import com.w7vm.menuweb.utility.PropertiesLoaderImpl;
import com.w7vm.menuweb.vo.AlimentoVO;
import com.w7vm.menuweb.vo.CardapioVO;

@ManagedBean
@ViewScoped
public class CardapioG3MB implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EJB
	private CardapioG3Facade cardapioG3EJB;

	@EJB
	private RestauranteSedeFacade sedeEJB;
	RestauranteSedeWeb restSede = new RestauranteSedeWeb();

	@EJB
	private RestauranteFilialFacade filialEJB;
	RestauranteFilialWeb restFilial = new RestauranteFilialWeb();
	
	@EJB
	private AlimentoFacade alimentoEJB;

	@EJB
	private PratoFacade pratoEJB;

	Constantes constObj = new Constantes();
	CardapioVO cardapioVO = new CardapioVO();
	private MessageFaces msgObj = new MessageFaces();
	private LoginMB loginOjb = new LoginMB();
	
	private CardapioEspecialidadeWeb especialidadeEntity = new CardapioEspecialidadeWeb();

	private List<SelectItem> cardapios;

	private List<AlimentoVO> alimentoTipoL = null;
	private List<AlimentosTiposSy> alimentosGeraisL = null;
	private List<AlimentoVO> alimentoL = null;
	
	private String selectedTipoAlimento;
	private List<AlimentoVO> selectedAlimentoL = new ArrayList<AlimentoVO>();
	private AlimentoVO alimentoVO = new AlimentoVO();
	
	// Variaveis Status : Layout Tela
	private boolean selectedG2PrFrio = true; 
	private boolean selectedG2Sobremesa = true; 
	private boolean selectedG2Couvert = true; 
	private boolean selectedG2PrQuente = true;
	private boolean selectedPanelCadastro = true;
	private boolean selectedPanelReportCad = false;
	

	private int i = -1;
	
	// List entidade Alimentos
	private List<AlimentoVO> avesL = null;
	private List<AlimentoVO> bovinaL = null;
	private List<AlimentoVO> suinaL = null;
	private List<AlimentoVO> peixeL = null;
	private List<AlimentoVO> frutaL = null;
	private List<AlimentoVO> hortalicaL = null;
	private List<AlimentoVO> doceL = null;
	private List<AlimentoVO> cereaisL = null;
	private List<AlimentoVO> massaL = null;
	private List<AlimentoVO> alimentosDefinidosL = null;
	
	
	// Variaveis : Layout Tela Nome
	private String tipoCardapio;
	private String nomeTelaCadastro;
	private String nomeTelaReport;
	private String nomeTelaCaracteristica;
	private String nomeTelaComposicao;
	private String nomeTelaAgendamento;
	private String cardapioG3NmPrato;
	private String nomeCardapio;
	private String selectTipoPrato;
	private String mensagem;
	private boolean statusSolicitacaoProxTela = false;
	
	private Date dtAtual;
	private Date dtExpContrato;
	private List<String> selectDiasSemana;
	private Boolean opcDataTermino = true;
	
	private List<String> nomeAliEspecialidadeL = new ArrayList<String>();
	private String nomeTipoAlimento;
	

	private String semanaDia;
	private boolean diaSegunda = false;
	private boolean diaTerca = false;
	private boolean diaQuarta = false;
	private boolean diaQuinta = false;
	private boolean diaSexta = false;
	private boolean diaSabado = false;
	private boolean diaDomingo = false;
	private String dia;
	private boolean statusDias;
	
	
	// Variaveis : Layout Tela Visibilidade
	private boolean statusPratoFrio = true;
	private boolean statusPratoQuente = true;
	private boolean statusSobremesa = false;
	private boolean statusAcompanhamento = false;
	private boolean statusTelaCaracteristica = false;
	private boolean statusValidacaoCampo = false;
	

	public CardapioG3MB() {
		System.out.println("CardapioMB()");
		controllCardapiosGrupo();
	}
	
	
// ==================== METHOD REDIRECT -- ===========================


	// CardapioG1 : Buffet | SelfService
	public void redirecionaCardapioOpcao(){
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../../../user/cardapio/opcaoCardapios.jsf");
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// CardapioG1 : Buffet | SelfService
	public void redirecionaPortalHome(){
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../../../user/portalCardapioMundo.jsf");
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	// CardapioG1 : Buffet | SelfService
	public void redirecionaCardapioG3(){
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../../../user/cardapio/cardapioG3/cadCardapioG3.jsf");
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
// ============= METHOD LOAD TELA CADASTRO -- Cardapio G2 (LACARTE | INFANTIL) ===========================


	public void controllCardapiosGrupo(){
		System.out.println("controllCardapiosGrupo()");
		
		tipoCardapio = (String) FacesUtil.getApplicationMapValue("CardapioOpcaoMB.value");
		System.out.println("controllCardapiosGrupo --> tipoCardapio  "+ tipoCardapio);
		
		setStatusTelaCaracteristica(true);
		
		// CARDAPIO G3
		if (tipoCardapio.equals(constObj.CARDAPIO_PIZZA)){
			
			cardapioG3NmPrato = "Nome da Pizza";
			nomeTelaCadastro = "Cadastro Cardápio Especializado - Pizza";
			nomeTelaCaracteristica = "Característica Cardápio Especializado - Pizza";
			nomeTelaComposicao = "Composição Alimentar Cardápio Especializado - Pizza";
			nomeTelaAgendamento = "Agendamento Cardápio - Pizaa";
			nomeTelaReport = "REPORT :: CONFIRMAÇÃO";
			nomeCardapio = "Cardápio Especializado";
			cardapioVO.setNomeEspecialidade(constObj.CARDAPIO_PIZZA);
		}
		else if (tipoCardapio.equals(constObj.CARDAPIO_LANCHE)){
			cardapioG3NmPrato = "Nome do Lanche";
			nomeTelaCadastro = "Cadastro Cardápio Especializado - Lanche";
			nomeTelaCaracteristica = "Característica Cardápio Especializado - Lanche";
			nomeTelaComposicao = "Composição Alimentar Cardápio Especializado - Lanche";
			nomeTelaAgendamento = "Agendamento Cardápio - Lanche";
			nomeTelaReport = "REPORT :: CONFIRMAÇÃO";
			nomeCardapio = "Cardápio Especializado";
			cardapioVO.setNomeEspecialidade(constObj.CARDAPIO_LANCHE);

		}
		else if (tipoCardapio.equals(constObj.CARDAPIO_PETISCO)){
			cardapioG3NmPrato = "Nome do Petisco";
			nomeTelaCadastro = "Cadastro Cardápio - Petisco";
			nomeTelaCaracteristica = "Característica Cardápio - Petisco";
			nomeTelaComposicao = "Composição Alimentar Cardápio - Petisco";
			nomeTelaAgendamento = "Agendamento Cardápio - Petisco";
			nomeTelaReport = "REPORT :: CONFIRMAÇÃO";
			nomeCardapio = "Cardápio Especializado";
			cardapioVO.setNomeEspecialidade(constObj.CARDAPIO_PETISCO);
		}
		else if (tipoCardapio.equals(constObj.CARDAPIO_SALGADO)){
			cardapioG3NmPrato = "Nome do Salgado";
			nomeTelaCadastro = "Cadastro Cardápio - Salgado";
			nomeTelaCaracteristica = "Característica Cardápio - Salgado";
			nomeTelaComposicao = "Composição Alimentar Cardápio - Salgado";
			nomeTelaAgendamento = "Agendamento Cardápio - Salgado";
			nomeTelaReport = "REPORT :: CONFIRMAÇÃO";
			nomeCardapio = "Cardápio Especializado";
			cardapioVO.setNomeEspecialidade(constObj.CARDAPIO_SALGADO);
		}
		else if (tipoCardapio.equals(constObj.CARDAPIO_SOBREMESA)){
			cardapioG3NmPrato = "Nome da Sobremesa";
			nomeTelaCadastro = "Cadastro Cardápio - Sobremesa";
			nomeTelaCaracteristica = "Característica Cardápio - Sobremesa";
			nomeTelaComposicao = "Composição Alimentar Cardápio - Sobremesa";
			nomeTelaAgendamento = "Agendamento Cardápio - Sobremesa";
			nomeTelaReport = "REPORT :: CONFIRMAÇÃO";
			nomeCardapio = "Cardápio Especializado";
			cardapioVO.setNomeEspecialidade(constObj.CARDAPIO_SOBREMESA);
		}
	}
	
// ======= METHOD LOAD -- ALIMENTOSVO view object ===========================

	public List<AlimentoVO> loadTipoAlimentos(){
		System.out.println("loadTipoAlimentos ================================================= ");
		AlimentosService alimentoService = new AlimentosService();

		alimentosGeraisL = alimentoEJB.getFindAlimentosTiposByAll();
		
		System.out.println("loadTipoAlimentos getFindAlimentosTiposByAll  "+ alimentosGeraisL.size());
		if(alimentosGeraisL != null)
		{
			alimentoTipoL = alimentoService.convertListaAlimentoTipo(alimentosGeraisL);
		}
		System.out.println("loadTipoAlimentos ================================================  "+ alimentoTipoL.size());
		return alimentoTipoL;
	}
	
	public List<AlimentoVO> loadAlimentosComposicao(List<AlimentosTiposSy> alimentosGeraisL, String tipoAlimento){
		System.out.println("BEGIN loadAlimentosComposicao ================================================= ");
		
		AlimentosService alimentoService = new AlimentosService();
		alimentoL = alimentoService.convertListaAlimentoComposicao(alimentosGeraisL, tipoAlimento);
		System.out.println("END loadAlimentosComposicao ================================================  "+ alimentoL.size());
		return alimentoL;
	}
	
	public List<AlimentoVO> loadAlimentosDefinidosL(){
		System.out.println("BEGIN loadAlimentosDefinidosL ================================================= ");
		List<AlimentoVO> defineAlimentoL = new ArrayList<AlimentoVO>();
		
		System.out.println("AVES...................."+ avesL);
		System.out.println("BOVINO...................."+ bovinaL);
		
		if(avesL != null){
			defineAlimentoL.addAll(avesL);
			
			
			for(AlimentoVO a : avesL){
				System.out.println("ID AVES.............................................."+ a.getId());
			}
			
		}
		
		if(bovinaL != null){
			defineAlimentoL.addAll(bovinaL);
		}
		
		if(suinaL != null){
			defineAlimentoL.addAll(suinaL);
		}
		
		if(peixeL != null){
			defineAlimentoL.addAll(peixeL);
		}
		
		if(frutaL != null){
			defineAlimentoL.addAll(frutaL);
		}
		
		if(hortalicaL != null){
			defineAlimentoL.addAll(hortalicaL);
		}
		
		if(doceL != null){
			defineAlimentoL.addAll(doceL);
		}
		
		if(cereaisL != null){
			defineAlimentoL.addAll(cereaisL);
		}
		
		if(massaL != null){
			defineAlimentoL.addAll(massaL);
		}
		System.out.println("END loadAlimentosDefinidosL ================================================  ");
		return defineAlimentoL;
	}


// ========================== METHOD VALIDATION -- CAMPOS =======================================================
	
	public void validaComposicaoAlimentos(){
		System.out.println("validaCamposComposicao() ");

		
		if(avesL == null && bovinaL == null && suinaL == null && 
				peixeL == null && frutaL == null && hortalicaL == null &&
				doceL == null && cereaisL == null && massaL== null){

			String msgTitulo = PropertiesLoaderImpl.getValor("msgValidaComposicao");
			msgObj.sendErrorMessageToUser(msgTitulo, "");
		}
		else{
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("PF('dlgAgendamento').show();");
		}
	}
	
	public void validaAgendamentoCardapio(){
		System.out.println("validaAgendamentoCardapio() ");
		boolean retorno = false;

		System.out.println("DATA INICIO...................."+ cardapioVO.getDtInicio());

		if(selectDiasSemana.size() == 0){
			String msgTitulo = PropertiesLoaderImpl.getValor("msgDiasSemana");
			System.out.println("validaAgendamentoCardapio  "+ msgTitulo);
			msgObj.sendErrorMessageToUser(msgTitulo, "diasSemana");
			System.exit(0);
		}
		
		else if(cardapioVO.getDtInicio() == null){
			String msgTitulo = PropertiesLoaderImpl.getValor("dtInicioAgendamento");
			System.out.println("validaAgendamentoCardapio  "+ msgTitulo);
			msgObj.sendErrorMessageToUser(msgTitulo, "diasSemana");
			System.exit(0);
		}
		else{
			selectedPanelCadastro = false;
			selectedPanelReportCad = true;
			statusTelaCaracteristica = false;
			
//			RequestContext context1 = RequestContext.getCurrentInstance();
//			context1.execute("PF('dlgAgendamento').hide();");
//
//			RequestContext context2 = RequestContext.getCurrentInstance();
//			context2.execute("PF('dlgComposicao').hide();");

			RequestContext context3 = RequestContext.getCurrentInstance();
			context3.execute("PF('dlgReport').show();");
		}
	}

	
	public boolean validaCamposCadastro(){
		
		boolean statusValidacaoPP = false;
		boolean statusValidacaoPS = false;
		
	
		if(cardapioVO.getDescricao().equals("") ||
				cardapioVO.getDescricao() == null){

			String msgTitulo = PropertiesLoaderImpl.getValor("msgValidaPratoQuente");
			msgObj.sendErrorMessageToUser(msgTitulo, "");
			statusValidacaoPP = true;
			return statusValidacaoPP;
		}

		if(statusValidacaoPS == true){
			System.out.println("TESTE 6");
			mensagem = PropertiesLoaderImpl.getValor("msgValidaCardapio");
			
			System.out.println("MENSAGEM "+ mensagem);
			
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("dlgMensagem.show();");
			statusValidacaoPS = true;
			return statusValidacaoPS ;
		}
		else{
			System.out.println("TESTE 7");
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("PF('dlgComposicaoAlimentar').show();");
			return statusValidacaoPS ;
		}
	}

// ======= METHOD PERSIST -- Cardapio (Buffet / LaCarte / Infantil / SelfService / Especialidade) ===========================
	
	
	public void salvarCardapio(){
		System.out.println("salvarCardapio()");
		RestauranteSedeWeb restSedeObj = new RestauranteSedeWeb();
		RestauranteFilialWeb restFilialObj = new RestauranteFilialWeb();
		
		AlimentosService alimentoService = new AlimentosService();
		List<ComposicaoCardEspecialidadeWeb> compCardEspecialidadeAlimentoL = null;
		String dias = preparaDiasSemana();
		int idRestauranteFilial = 0;
		int idRestauranteSede = 0;
		String dtTermino;
		
		cardapioVO.setDiasSemana(dias);
		if (cardapioVO.getDtTermino() == null){
			dtTermino = (String) loginOjb.getSessao("DtTerminoContrato");
			DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
			try {
				Date date = (Date)formatter.parse(dtTermino);
				System.out.println("Data Termino....."+ date );
				cardapioVO.setDtTermino(date);
			} catch (ParseException e) {
				e.printStackTrace();
			}  
		}
		
		especialidadeEntity = cardapioG3EJB.setCardapioEspecialidadeEntity(cardapioVO);
		compCardEspecialidadeAlimentoL = alimentoService.convertListaAlimentoEntityEspecilidade(getAlimentosDefinidosL(), especialidadeEntity);

		// Set Entity Restaurante SEDE | FILIAL | ComposicaoCardapio
		especialidadeEntity.setComposicaoCardEspecialidadeWebs(compCardEspecialidadeAlimentoL);

		
		if(loginOjb.getSessao("AcessoFilial").equals(constObj.ACESSO_FILIAL_SIM)){
			System.out.println("Acesso FILIAL SIM.................");

			idRestauranteFilial = (Integer) loginOjb.getSessao("IDRestaurante");
			idRestauranteSede = (Integer) loginOjb.getSessao("IDSede");
			cardapioVO.setIdRestauranteSede(idRestauranteSede);
			cardapioVO.setIdRestauranteFilial(idRestauranteFilial);
			restSedeObj.setIdRestauranteSedeWeb(cardapioVO.getIdRestauranteSede());			
			restFilialObj.setIdRestauranteFilialWeb(cardapioVO.getIdRestauranteFilial());
			especialidadeEntity.setRestauranteFilialWeb(restFilialObj);
			especialidadeEntity.setRestauranteSedeWeb(restSedeObj);
			System.out.println("Acesso FILIAL SIM................."+ especialidadeEntity.getRestauranteFilialWeb());
		}
		else if(loginOjb.getSessao("AcessoFilial").equals(constObj.ACESSO_FILIAL_NAO)){
			System.out.println("Acesso FILIAL NÃO.................");

			idRestauranteSede = (Integer) loginOjb.getSessao("IDSede");
			cardapioVO.setIdRestauranteSede(idRestauranteSede);
			restSedeObj.setIdRestauranteSedeWeb(cardapioVO.getIdRestauranteSede());		
			especialidadeEntity.setRestauranteSedeWeb(restSedeObj);
			System.out.println("Acesso FILIAL NÃO................."+ especialidadeEntity.getRestauranteSedeWeb());
		}
		try{
			cardapioG3EJB.saveEspecialidade(especialidadeEntity);
			RequestContext context = RequestContext.getCurrentInstance();
			context.execute("PF('dlgMsgDecisao').show();");
		} catch (Exception e) {
			e.printStackTrace();
			String msgTitulo = PropertiesLoaderImpl.getValor("tErrorCadCardapioBuffet");
			msgObj.sendErrorMessageToUser(msgTitulo, "");
		}
 	}
	
	

	
	
// ======= METHOD PREPARA METHOD -- PERSISTE ===========================
	public String preparaDiasSemana(){
		String dias = null;
		
		for(String dia : selectDiasSemana){
			if(dias == null){
				dias = dia;
			}
			else{
				dias = dias + "|"+ dia;
			}
		}
		return dias;
		
	}
	

	public String getTipoCardapio() {
		return tipoCardapio;
	}

	public void setTipoCardapio(String tipoCardapio) {
		this.tipoCardapio = tipoCardapio;
	}

	public CardapioVO getCardapioVO() {
		return cardapioVO;
	}

	public void setCardapioVO(CardapioVO cardapioVO) {
		this.cardapioVO = cardapioVO;
	}

	public RestauranteSedeWeb getRestSede() {
		return restSede;
	}

	public void setRestSede(RestauranteSedeWeb restSede) {
		this.restSede = restSede;
	}

	public RestauranteFilialWeb getRestFilial() {
		return restFilial;
	}

	public void setRestFilial(RestauranteFilialWeb restFilial) {
		this.restFilial = restFilial;
	}

	public List<SelectItem> getCardapios() {
		return cardapios;
	}

	public void setCardapios(List<SelectItem> cardapios) {
		this.cardapios = cardapios;
	}


	public List<AlimentoVO> getSelectedAlimentoL() {
		System.out.println("getSelectedAlimentoL........."+ selectedAlimentoL);

		return selectedAlimentoL;
	}
	
	public void setSelectedAlimentoL(List<AlimentoVO> selectedAlimentoL) {
		System.out.println("setSelectedAlimentoL ABC................"+ selectedAlimentoL.size());

		if(selectedAlimentoL.size() > 0){

			System.out.println("IF RESULT O.K "+ selectedAlimentoL);

			for(AlimentoVO a : selectedAlimentoL){
				System.out.println("TESTEEEEE TipoCardapio ..........."+ a.getTipoCardapio());
				System.out.println("TESTEEEEE Descricao ..........."+ a.getDescricao());
				System.out.println("TESTEEEEE NomeTipo ..........."+ a.getNomeTipo());
				System.out.println("TESTEEEEE IdTipo ..........."+ a.getIdTipo());
				System.out.println("TESTEEEEE iD..........."+ a.getId());
				
				if(a.getNomeTipo() == constObj.ALIM_CARNE_AVE){
					this.avesL = selectedAlimentoL;
					System.out.println("ALIM AVES....."+ this.avesL.size());
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_CARNE_BOV)){
					System.out.println("ALIM BOVINA.....");
					this.bovinaL = selectedAlimentoL;
					System.out.println("ALIM BOVINA....."+ this.bovinaL.size());
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_CARNE_PEI)){
					this.peixeL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_CARNE_SUI)){
					this.suinaL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_CEREAIS_GER)){
					this.cereaisL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_CEREAIS_MAS)){
					this.massaL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_ACUCAR_DOC)){
					this.doceL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_FRUTAS_FRU)){
					this.frutaL = selectedAlimentoL;
				}
				else if(a.getNomeTipo().equals(constObj.ALIM_HORTAL_HORT)){
					this.hortalicaL = selectedAlimentoL;
				}
			}
		}
	}


	public List<AlimentoVO> getAlimentoTipoL() {
		System.out.println("BEGIN getAlimentoTipoL =====================================================");
		if(alimentoTipoL == null){
			alimentoTipoL = loadTipoAlimentos();
	
			for(AlimentoVO a : alimentoTipoL){
				nomeAliEspecialidadeL.add(a.getNomeTipo());
			}
		}
		return alimentoTipoL;
	}


	public void setAlimentoTipoL(List<AlimentoVO> alimentoTipoL) {
		this.alimentoTipoL = alimentoTipoL;
	}
	
	public List<AlimentoVO> getAlimentoL() {
		System.out.println("BEGIN getAlimentoL()");
		
		if(i == nomeAliEspecialidadeL.size() -1){
			i = nomeAliEspecialidadeL.size() -1;
		}
		else{
			i++;			
		}

		
		System.out.println("Numero do Alimento..........>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+ i);

		if(i <= nomeAliEspecialidadeL.size() -1){
			System.out.println("Numero do Alimento.........."+ i);
			String tipoAlimento = nomeAliEspecialidadeL.get(i);
			System.out.println("Nome do Alimento.........."+ tipoAlimento);
			
			alimentoL = loadAlimentosComposicao(alimentosGeraisL,tipoAlimento);
				
			System.out.println("END getAlimentoL().................."+ alimentoL.size());
			
			if(i == nomeAliEspecialidadeL.size() -1){
				i = -1;
			}

		}
		return alimentoL;
	}


	public void setAlimentoL(List<AlimentoVO> alimentoL) {
		this.alimentoL = alimentoL;
	}


	public String getSelectedTipoAlimento() {
		return selectedTipoAlimento;
	}


	public void setSelectedTipoAlimento(String selectedTipoAlimento) {
		this.selectedTipoAlimento = selectedTipoAlimento;
	}

	public Constantes getConstObj() {
		return constObj;
	}


	public void setConstObj(Constantes constObj) {
		this.constObj = constObj;
	}

	public String getNomeTelaCadastro() {
		return nomeTelaCadastro;
	}

	public void setNomeTelaCadastro(String nomeTelaCadastro) {
		this.nomeTelaCadastro = nomeTelaCadastro;
	}

	public String getNomeTelaCaracteristica() {
		return nomeTelaCaracteristica;
	}

	public void setNomeTelaCaracteristica(String nomeTelaCaracteristica) {
		this.nomeTelaCaracteristica = nomeTelaCaracteristica;
	}

	public String getNomeTelaComposicao() {
		return nomeTelaComposicao;
	}

	public void setNomeTelaComposicao(String nomeTelaComposicao) {
		this.nomeTelaComposicao = nomeTelaComposicao;
	}

	public String getNomeTelaAgendamento() {
		return nomeTelaAgendamento;
	}

	public void setNomeTelaAgendamento(String nomeTelaAgendamento) {
		this.nomeTelaAgendamento = nomeTelaAgendamento;
	}

	public boolean isStatusPratoFrio() {
		return statusPratoFrio;
	}

	public void setStatusPratoFrio(boolean statusPratoFrio) {
		this.statusPratoFrio = statusPratoFrio;
	}

	public boolean isStatusSobremesa() {
		return statusSobremesa;
	}

	public void setStatusSobremesa(boolean statusSobremesa) {
		this.statusSobremesa = statusSobremesa;
	}

	public boolean isStatusAcompanhamento() {
		return statusAcompanhamento;
	}

	public void setStatusAcompanhamento(boolean statusAcompanhamento) {
		this.statusAcompanhamento = statusAcompanhamento;
	}





	public boolean isStatusTelaCaracteristica() {
		System.out.println("isStatusTelaCaracteristica()"+ statusTelaCaracteristica);
		return statusTelaCaracteristica;
	}



	public void setStatusTelaCaracteristica(boolean statusTelaCaracteristica) {
		this.statusTelaCaracteristica = statusTelaCaracteristica;
	}


	public boolean isStatusValidacaoCampo() {
		return statusValidacaoCampo;
	}


	public void setStatusValidacaoCampo(boolean statusValidacaoCampo) {
		this.statusValidacaoCampo = statusValidacaoCampo;
	}


	public AlimentoVO getAlimentoVO() {
		return alimentoVO;
	}


	public void setAlimentoVO(AlimentoVO alimentoVO) {
		this.alimentoVO = alimentoVO;
	}


	public List<String> getNomeAliEspecialidadeL() {
		return nomeAliEspecialidadeL;
	}


	public void setNomeAliEspecialidadeL(List<String> nomeAliEspecialidadeL) {
		this.nomeAliEspecialidadeL = nomeAliEspecialidadeL;
	}


	public String getNomeTipoAlimento() {
		return nomeTipoAlimento;
	}


	public void setNomeTipoAlimento(String nomeTipoAlimento) {
		this.nomeTipoAlimento = nomeTipoAlimento;
	}


	public String getMensagem() {
		return mensagem;
	}


	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}


	public boolean isStatusSolicitacaoProxTela() {
		return statusSolicitacaoProxTela;
	}


	public void setStatusSolicitacaoProxTela(boolean statusSolicitacaoProxTela) {
		System.out.println("setStatusSolicitacaoProxTela "+ statusSolicitacaoProxTela);
		this.statusSolicitacaoProxTela = statusSolicitacaoProxTela;
	}


	public CardapioG3Facade getCardapioG3EJB() {
		return cardapioG3EJB;
	}


	public void setCardapioG3EJB(CardapioG3Facade cardapioG3EJB) {
		this.cardapioG3EJB = cardapioG3EJB;
	}


	public RestauranteSedeFacade getSedeEJB() {
		return sedeEJB;
	}


	public void setSedeEJB(RestauranteSedeFacade sedeEJB) {
		this.sedeEJB = sedeEJB;
	}


	public RestauranteFilialFacade getFilialEJB() {
		return filialEJB;
	}


	public void setFilialEJB(RestauranteFilialFacade filialEJB) {
		this.filialEJB = filialEJB;
	}


	public AlimentoFacade getAlimentoEJB() {
		return alimentoEJB;
	}


	public void setAlimentoEJB(AlimentoFacade alimentoEJB) {
		this.alimentoEJB = alimentoEJB;
	}


	public MessageFaces getMsgObj() {
		return msgObj;
	}


	public void setMsgObj(MessageFaces msgObj) {
		this.msgObj = msgObj;
	}


	public LoginMB getLoginOjb() {
		return loginOjb;
	}


	public void setLoginOjb(LoginMB loginOjb) {
		this.loginOjb = loginOjb;
	}


	public CardapioEspecialidadeWeb getEspecialidadeEntity() {
		return especialidadeEntity;
	}


	public void setEspecialidadeEntity(CardapioEspecialidadeWeb especialidadeEntity) {
		this.especialidadeEntity = especialidadeEntity;
	}



	public List<AlimentosTiposSy> getAlimentosGeraisL() {
		return alimentosGeraisL;
	}


	public void setAlimentosGeraisL(List<AlimentosTiposSy> alimentosGeraisL) {
		this.alimentosGeraisL = alimentosGeraisL;
	}


	public int getI() {
		return i;
	}


	public void setI(int i) {
		this.i = i;
	}


	public List<AlimentoVO> getAvesL() {
		return avesL;
	}


	public void setAvesL(List<AlimentoVO> avesL) {
		this.avesL = avesL;
	}


	public List<AlimentoVO> getBovinaL() {
		return bovinaL;
	}


	public void setBovinaL(List<AlimentoVO> bovinaL) {
		this.bovinaL = bovinaL;
	}


	public List<AlimentoVO> getSuinaL() {
		return suinaL;
	}


	public void setSuinaL(List<AlimentoVO> suinaL) {
		this.suinaL = suinaL;
	}


	public List<AlimentoVO> getPeixeL() {
		return peixeL;
	}


	public void setPeixeL(List<AlimentoVO> peixeL) {
		this.peixeL = peixeL;
	}


	public List<AlimentoVO> getFrutaL() {
		return frutaL;
	}


	public void setFrutaL(List<AlimentoVO> frutaL) {
		this.frutaL = frutaL;
	}


	public List<AlimentoVO> getHortalicaL() {
		return hortalicaL;
	}


	public void setHortalicaL(List<AlimentoVO> hortalicaL) {
		this.hortalicaL = hortalicaL;
	}


	public List<AlimentoVO> getDoceL() {
		return doceL;
	}


	public void setDoceL(List<AlimentoVO> doceL) {
		this.doceL = doceL;
	}


	public List<AlimentoVO> getCereaisL() {
		return cereaisL;
	}


	public void setCereaisL(List<AlimentoVO> cereaisL) {
		this.cereaisL = cereaisL;
	}


	public List<AlimentoVO> getMassaL() {
		return massaL;
	}


	public void setMassaL(List<AlimentoVO> massaL) {
		this.massaL = massaL;
	}


	public Date getDtAtual() {
		dtAtual = new Date();
		return dtAtual;
	}


	public void setDtAtual(Date dtAtual) {
		this.dtAtual = dtAtual;
	}


	public Date getDtExpContrato() throws ParseException {
		DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");  
		String data = (String) loginOjb.getSessao("DtTerminoContrato");
		dtExpContrato = formatter.parse(data); 
		return dtExpContrato;
	}


	public void setDtExpContrato(Date dtExpContrato) {
		this.dtExpContrato = dtExpContrato;
	}


	public List<String> getSelectDiasSemana() {
		
		if(selectDiasSemana != null){
			for(String diaSemana : selectDiasSemana){
				if(diaSemana.equals(semanaDia)){
					dia =  diaSemana;
				}
			}
		}
		return selectDiasSemana;
	}


	public void setSelectDiasSemana(List<String> selectDiasSemana) {
		this.selectDiasSemana = selectDiasSemana;
	}


	public Boolean getOpcDataTermino() {
		System.out.println("OpcDataTermino  "+ opcDataTermino);
		return opcDataTermino;
	}


	public void setOpcDataTermino(Boolean opcDataTermino) {
		System.out.println("OpcDataTermino  "+ opcDataTermino);
		this.opcDataTermino = opcDataTermino;
	}


	public boolean isSelectedPanelCadastro() {
		System.out.println("setSelectedPanelCadastro "+  selectedPanelCadastro);
		return selectedPanelCadastro;
	}


	public void setSelectedPanelCadastro(boolean selectedPanelCadastro) {
		this.selectedPanelCadastro = selectedPanelCadastro;
	}


	public boolean isSelectedPanelReportCad() {
		return selectedPanelReportCad;
	}


	public void setSelectedPanelReportCad(boolean selectedPanelReportCad) {
		this.selectedPanelReportCad = selectedPanelReportCad;
	}


	public List<AlimentoVO> getAlimentosDefinidosL() {
		alimentosDefinidosL = loadAlimentosDefinidosL();
		return alimentosDefinidosL;
	}


	public void setAlimentosDefinidosL(List<AlimentoVO> alimentosDefinidosL) {
		this.alimentosDefinidosL = alimentosDefinidosL;
	}


	public boolean getDiaSegunda() {
		semanaDia = constObj.DIA_SEGUNDA;
		getSelectDiasSemana();
		
		System.out.println("getDiaSegunda()"+ dia);
		if(dia != null){
			
			if(dia.equals(constObj.DIA_SEGUNDA)){
				diaSegunda = true;
				System.out.println("getDiaSegunda() IF 1 "+ diaSegunda );
			}
			else{
				diaSegunda = false;
				System.out.println("getDiaSegunda() ELSE 1 "+ diaSegunda );
			}
		}
		System.out.println("getDiaSegunda() result"+ diaSegunda );
		return diaSegunda;
	}


	public void setDiaSegunda(boolean diaSegunda) {
		this.diaSegunda = diaSegunda;
	}


	public boolean getDiaTerca() {
		semanaDia = constObj.DIA_TERCA;
		getSelectDiasSemana();

		if(dia != null){
		
			if(dia.equals(constObj.DIA_TERCA)){
				diaTerca = true;
			}
			else{
				diaTerca = false;
			}
		}
		return diaTerca;
	}


	public void setDiaTerca(boolean diaTerca) {
		this.diaTerca = diaTerca;
	}


	public boolean getDiaQuarta() {
		semanaDia = constObj.DIA_QUARTA;
		getSelectDiasSemana();
		
		if(dia != null){
			
			if(dia.equals(constObj.DIA_QUARTA)){
				diaQuarta = true;
			}
			else{
				diaQuarta = false;
			}
		}
		return diaQuarta;
	}


	public void setDiaQuarta(boolean diaQuarta) {
		this.diaQuarta = diaQuarta;
	}


	public boolean getDiaQuinta() {
		semanaDia = constObj.DIA_QUINTA;
		getSelectDiasSemana();

		if(dia != null){

			if(dia.equals(constObj.DIA_QUINTA)){
				diaQuinta = true;
			}
			else{
				diaQuinta = false;
			}
		}
		return diaQuinta;
	}


	public void setDiaQuinta(boolean diaQuinta) {
		this.diaQuinta = diaQuinta;
	}


	public boolean getDiaSexta() {
		semanaDia = constObj.DIA_SEXTA;
		getSelectDiasSemana();
		
		if(dia != null){
			if(dia.equals(constObj.DIA_SEXTA)){
				diaSexta = true; 
			}
			else{
				diaSexta = false;
			}
		}
		return diaSexta;
	}


	public void setDiaSexta(boolean diaSexta) {
		this.diaSexta = diaSexta;
	}


	public boolean getDiaSabado() {
		semanaDia = constObj.DIA_SABADO;
		getSelectDiasSemana();
		
		if(dia != null){
			if(dia.equals(constObj.DIA_SABADO)){
				diaSabado = true; 
			}
			else{
				diaSabado = false;
			}
		}
		return diaSabado;
	}


	public void setDiaSabado(boolean diaSabado) {
		this.diaSabado = diaSabado;
	}


	public boolean getDiaDomingo() {
		semanaDia = constObj.DIA_DOMINGO;
		getSelectDiasSemana();
		if(dia != null){

			if(dia.equals(constObj.DIA_DOMINGO)){
				diaDomingo = true; 
			}
			else{
				diaDomingo = false;
			}
		}
		return diaDomingo;
	}


	public void setDiaDomingo(boolean diaDomingo) {
		this.diaDomingo = diaDomingo;
	}


	public String getDia() {
		return dia;
	}


	public void setDia(String dia) {
		this.dia = dia;
	}


	public String isSemanaDia() {
		return semanaDia;
	}


	public void setSemanaDia(String semanaDia) {
		this.semanaDia = semanaDia;
	}


	public String getNomeTelaReport() {
		return nomeTelaReport;
	}


	public void setNomeTelaReport(String nomeTelaReport) {
		this.nomeTelaReport = nomeTelaReport;
	}


	public String getNomeCardapio() {
		return nomeCardapio;
	}


	public void setNomeCardapio(String nomeCardapio) {
		this.nomeCardapio = nomeCardapio;
	}


	public boolean isStatusPratoQuente() {
		return statusPratoQuente;
	}


	public void setStatusPratoQuente(boolean statusPratoQuente) {
		this.statusPratoQuente = statusPratoQuente;
	}


	public boolean isSelectedG2PrFrio() {
		return selectedG2PrFrio;
	}


	public void setSelectedG2PrFrio(boolean selectedG2PrFrio) {
		this.selectedG2PrFrio = selectedG2PrFrio;
	}


	public boolean isSelectedG2Sobremesa() {
		return selectedG2Sobremesa;
	}


	public void setSelectedG2Sobremesa(boolean selectedG2Sobremesa) {
		this.selectedG2Sobremesa = selectedG2Sobremesa;
	}


	public boolean isSelectedG2Couvert() {
		return selectedG2Couvert;
	}


	public void setSelectedG2Couvert(boolean selectedG2Couvert) {
		this.selectedG2Couvert = selectedG2Couvert;
	}


	public boolean isSelectedG2PrQuente() {
		return selectedG2PrQuente;
	}


	public void setSelectedG2PrQuente(boolean selectedG2PrQuente) {
		this.selectedG2PrQuente = selectedG2PrQuente;
	}


	public boolean isStatusDias() {
		return statusDias;
	}


	public void setStatusDias(boolean statusDias) {
		this.statusDias = statusDias;
	}


	public static long getSerialversionuid() {
		return serialVersionUID;
	}


	public String getSemanaDia() {
		return semanaDia;
	}


	public PratoFacade getPratoEJB() {
		return pratoEJB;
	}


	public void setPratoEJB(PratoFacade pratoEJB) {
		this.pratoEJB = pratoEJB;
	}


	public void setSelectTipoPrato(String selectTipoPrato) {
		this.selectTipoPrato = selectTipoPrato;
	}


	public String getCardapioG3NmPrato() {
		return cardapioG3NmPrato;
	}


	public void setCardapioG3NmPrato(String cardapioG3NmPrato) {
		this.cardapioG3NmPrato = cardapioG3NmPrato;
	}

}
